home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 143
/
(Vol 143) Nov 15 2011.iso
/
Games
/
aqua_cubes.swf
/
scripts
/
frame_83
/
DoAction_5.as
< prev
next >
Wrap
Text File
|
2011-11-15
|
33KB
|
1,244 lines
function setBlock(block, frame)
{
block.color = frame % MAX_COLOR;
block.bomb = frame <= MAX_COLOR ? false : true;
block.gotoAndStop(frame);
}
var BLOCK_WIDTH = 40;
var BLOCK_HEIGHT = 40;
var MIN_BLOCK = 4;
var MAX_COLOR = 9;
ctrl.initialGame = function(row, col)
{
trace("initialGame");
board.row = row;
board.col = col;
var _loc2_ = undefined;
_loc2_ = 1;
var _loc6_ = 1;
while(_loc6_ <= col)
{
var _loc5_ = row;
while(_loc5_ >= 1)
{
var _loc4_ = board.attachMovie("obj_piece","block" + _loc2_,_loc2_);
_loc4_.no = _loc2_;
var _loc3_ = new Object();
_loc3_.row = _loc5_;
_loc3_.col = _loc6_;
_loc3_.x = _loc4_._x = (_loc6_ - 1) * BLOCK_WIDTH;
_loc3_.y = _loc4_._y = (_loc5_ - 1) * BLOCK_HEIGHT;
_loc2_ = _loc2_ + 1;
_loc4_.pos = _loc3_;
_loc4_.onPress = function()
{
trace(this + "," + this.color + "," + this.bomb);
ctrl.startMove(this);
};
_loc5_ = _loc5_ - 1;
}
_loc6_ = _loc6_ + 1;
}
board.createEmptyMovieClip("contCol1",1101);
board.createEmptyMovieClip("contCol2",1102);
board.createEmptyMovieClip("contRow1",1103);
board.createEmptyMovieClip("contRow2",1104);
var _loc7_ = undefined;
var _loc8_ = 1;
while(_loc8_ <= 2)
{
_loc7_ = board["contCol" + _loc8_];
_loc7_._visible = false;
_loc2_ = 1;
_loc5_ = 0;
while(_loc5_ < row)
{
_loc4_ = _loc7_.attachMovie("obj_piece","block" + _loc2_,_loc2_);
_loc2_ = _loc2_ + 1;
_loc4_._x = 0;
_loc4_._y = _loc5_ * BLOCK_HEIGHT;
_loc4_.stop();
_loc5_ = _loc5_ + 1;
}
_loc7_ = board["contRow" + _loc8_];
_loc7_._visible = false;
_loc2_ = 1;
_loc6_ = 0;
while(_loc6_ < col)
{
_loc4_ = _loc7_.attachMovie("obj_piece","block" + _loc2_,_loc2_);
_loc2_ = _loc2_ + 1;
_loc4_._x = _loc6_ * BLOCK_WIDTH;
_loc4_._y = 0;
_loc4_.stop();
_loc6_ = _loc6_ + 1;
}
_loc8_ = _loc8_ + 1;
}
};
ctrl.resetGame = function()
{
hint_start._visible = false;
hint_target._visible = false;
delete this.onEnterFrame;
delete this.onMouseMove;
delete this.onMouseUp;
delete this.disposeInfo;
delete this.moveInfo;
this.onEnterFrame = function()
{
this.checkMove();
delete this.onEnterFrame;
trace("movable : " + this.movable);
};
combo.gotoAndStop(1);
board.resetBoard();
};
board.createDisposeAt = function(block)
{
var _loc3_ = this.dNo;
var _loc2_ = this.attachMovie("fx_explode","explode" + _loc3_,2000 + _loc3_);
if(_loc2_)
{
this.dNo = this.dNo + 1;
_loc2_._x = block._x;
_loc2_._y = block._y;
}
};
board.createLinkAt = function(block, dir)
{
var _loc1_ = undefined;
if(dir == "T")
{
_loc1_ = block.attachMovie("linkT","link1",101);
}
else if(dir == "B")
{
_loc1_ = block.attachMovie("linkB","link2",101);
}
return _loc1_;
};
ctrl.randomLink = function()
{
if(this.moveInfo == undefined && this.disposeInfo == undefined)
{
trace("ctrl.randomLink");
board.randomLink(blocks);
delete this.linkInfo;
}
else
{
this.linkInfo = true;
}
};
board.randomLink = function()
{
trace("randomLink");
var _loc4_ = this.getBlocks();
_loc4_.shift();
var _loc10_ = 0;
var _loc5_ = _loc4_.length - 1;
while(_loc5_ >= 0)
{
if(_loc4_[_loc5_].link1)
{
_loc10_ = _loc10_ + 1;
}
_loc5_ = _loc5_ - 1;
}
if(_loc10_ < game.maxObstruct)
{
trace("board.randomLink");
var _loc8_ = false;
do
{
var _loc6_ = Math.floor(Math.random() * _loc4_.length);
var _loc2_ = _loc4_[_loc6_];
var _loc7_ = _loc2_.pos.row;
var _loc9_ = _loc2_.pos.col;
_loc4_.splice(_loc6_,1);
if(_loc7_ != this.row)
{
var _loc3_ = this.getRealBlock(_loc2_.pos.row + 1,_loc2_.pos.col);
if(_loc2_.link1 == undefined && _loc2_.link2 == undefined && _loc3_.link1 == undefined && _loc3_.link2 == undefined)
{
this.createLinkAt(_loc2_,"T");
this.createLinkAt(_loc3_,"B");
_loc2_.link1.linkTo = _loc3_.link2;
_loc3_.link2.linkTo = _loc2_.link1;
_loc8_ = true;
}
}
}
while(!_loc8_ && _loc4_.length > 0);
}
};
board.resetBoard = function()
{
this.dNo = 0;
this.backToNormal();
var i = this.row * this.col;
while(i > 0)
{
with(this["block" + i])
{
_x = pos.x;
_y = pos.y;
}
i--;
}
};
board.backToNormal = function()
{
this.contCol1._visible = false;
this.contCol2._visible = false;
this.contRow1._visible = false;
this.contRow2._visible = false;
var _loc2_ = this.grab.pos;
this.setVisibleLine("C",_loc2_.col,true);
this.setVisibleLine("R",_loc2_.row,true);
};
board.getRealBlock = function(tr, tc)
{
return this["block" + ((tc - 1) * this.col + (this.row - tr + 1))];
};
board.setVisibleLine = function(dir, t, vis)
{
var _loc2_ = function(block)
{
block._visible = vis;
};
this.traverse(dir,t,_loc2_);
};
board.traverse = function(dir, t, action)
{
switch(dir)
{
case "R":
var _loc3_ = 1;
while(_loc3_ <= this.col)
{
action.apply(action,[this.getRealBlock(t,_loc3_)]);
_loc3_ = _loc3_ + 1;
}
break;
case "C":
var _loc2_ = 1;
while(_loc2_ <= this.row)
{
action.apply(action,[this.getRealBlock(_loc2_,t)]);
_loc2_ = _loc2_ + 1;
}
}
};
board.randomBoard = function()
{
var _loc7_ = new Array(this.row * this.col + 1);
var _loc3_ = 1;
while(_loc3_ < _loc7_.length)
{
var _loc6_ = false;
do
{
var _loc5_ = 1 + Math.floor(Math.random() * game.playColor);
_loc7_[_loc3_] = {color:_loc5_};
var _loc4_ = this.findSmallAdjacent(_loc3_,_loc7_);
if(_loc4_ == undefined || _loc4_.length < MIN_BLOCK)
{
_loc6_ = true;
var _loc2_ = this["block" + _loc3_];
setBlock(_loc2_,_loc5_);
_loc2_.link1.removeMovieClip();
_loc2_.link2.removeMovieClip();
}
}
while(!_loc6_);
_loc3_ = _loc3_ + 1;
}
};
board.getHint = function()
{
var _loc8_ = 1;
while(_loc8_ <= this.row)
{
var _loc5_ = 1;
while(_loc5_ <= this.col)
{
var _loc3_ = this.getRealBlock(_loc8_,_loc5_);
var _loc6_ = undefined;
var _loc2_ = undefined;
if(!this.getLock(_loc3_).lockRow)
{
var _loc7_ = 1;
while(_loc7_ <= this.row)
{
var _loc10_ = _loc7_ - _loc8_;
if(_loc10_ != 0)
{
_loc6_ = this.prepareAdjacent(_loc3_,"R",_loc10_).blocks;
var _loc12_ = new Array();
var _loc4_ = this.col;
while(_loc4_ >= 1)
{
_loc2_ = this.findSmallAdjacent(this.getRealBlock(_loc8_,_loc4_).no,_loc6_);
if(_loc2_ && _loc2_.length >= MIN_BLOCK)
{
return {dir:"R",step:_loc10_,no:_loc3_.no};
}
_loc4_ = _loc4_ - 1;
}
}
_loc7_ = _loc7_ + 1;
}
}
_loc7_ = 1;
while(_loc7_ <= this.col)
{
_loc10_ = _loc7_ - _loc5_;
if(_loc10_ != 0)
{
_loc6_ = this.prepareAdjacent(_loc3_,"C",_loc10_).blocks;
_loc12_ = new Array();
_loc4_ = this.row;
while(_loc4_ >= 1)
{
_loc2_ = this.findSmallAdjacent(this.getRealBlock(_loc4_,_loc5_).no,_loc6_);
if(_loc2_ && _loc2_.length >= MIN_BLOCK)
{
return {dir:"C",step:_loc10_,no:_loc3_.no};
}
_loc4_ = _loc4_ - 1;
}
}
_loc7_ = _loc7_ + 1;
}
_loc5_ = _loc5_ + 1;
}
_loc8_ = _loc8_ + 1;
}
};
board.getLock = function(block)
{
var _loc6_ = new Object();
var _loc5_ = undefined;
_loc5_ = block.pos.row;
var _loc3_ = 1;
while(_loc3_ <= this.col)
{
var _loc4_ = this.getRealBlock(_loc5_,_loc3_);
if(_loc4_.link1 || _loc4_.link2)
{
_loc6_.lockRow = true;
break;
}
_loc3_ = _loc3_ + 1;
}
_loc5_ = block.pos.col;
var _loc2_ = 1;
while(_loc2_ <= this.row)
{
if(this.getRealBlock(_loc2_,_loc5_).linkCol)
{
_loc6_.lockCol = true;
break;
}
_loc2_ = _loc2_ + 1;
}
return _loc6_;
};
board.prepareAdjacent = function(block, dir, step)
{
var _loc4_ = undefined;
switch(dir)
{
case "R":
_loc4_ = this.row - block.pos.row + 1;
break;
case "C":
_loc4_ = block.pos.col;
}
var _loc5_ = this.getBlocks();
var _loc6_ = this.getRollChanged(_loc5_,dir,_loc4_,step);
var _loc2_ = _loc6_.length - 1;
while(_loc2_ >= 0)
{
var _loc3_ = _loc6_[_loc2_];
_loc5_[_loc3_.no] = _loc3_.value;
_loc2_ = _loc2_ - 1;
}
return {blocks:_loc5_,roll:_loc6_};
};
board.getAdjacent = function(find, blocks)
{
var _loc4_ = new Array();
var _loc6_ = undefined;
while(_loc6_ = find.pop())
{
var _loc5_ = undefined;
var _loc3_ = _loc4_.length - 1;
while(_loc3_ >= 0)
{
var _loc2_ = _loc4_[_loc3_].length - 1;
while(_loc2_ >= 0)
{
if(_loc4_[_loc3_][_loc2_] == _loc6_)
{
_loc5_ = true;
break;
}
_loc2_ = _loc2_ - 1;
}
if(_loc5_)
{
break;
}
_loc3_ = _loc3_ - 1;
}
if(!_loc5_)
{
var _loc7_ = this.findAdjacent(_loc6_,blocks);
if(_loc7_ && _loc7_.length >= MIN_BLOCK)
{
_loc4_.push(_loc7_);
}
}
}
return _loc4_;
};
board.blazeTheBomb = function(res)
{
var _loc9_ = this.row;
var _loc14_ = this.col;
var _loc10_ = 0;
while(_loc10_ < res.length)
{
var _loc4_ = res[_loc10_];
if(this["block" + _loc4_].bomb)
{
var _loc11_ = new Sound();
_loc11_.attachSound("sfx_explode01");
_loc11_.start();
var _loc6_ = [_loc4_ - _loc9_,_loc4_ + _loc9_];
var _loc12_ = _loc4_ % _loc9_;
if(_loc12_ != 0)
{
_loc6_ = _loc6_.concat([_loc4_ - _loc9_ + 1,_loc4_ + 1,_loc4_ + _loc9_ + 1]);
}
if(_loc12_ != 1)
{
_loc6_ = _loc6_.concat([_loc4_ - _loc9_ - 1,_loc4_ - 1,_loc4_ + _loc9_ - 1]);
}
var _loc13_ = _loc9_ * _loc14_;
var _loc7_ = 0;
while(_loc7_ < _loc6_.length)
{
var _loc3_ = _loc6_[_loc7_];
if(_loc3_ >= 1 && _loc3_ <= _loc13_)
{
var _loc8_ = false;
var _loc2_ = 0;
while(_loc2_ < res.length)
{
if(res[_loc2_] == _loc3_)
{
_loc8_ = true;
break;
}
_loc2_ = _loc2_ + 1;
}
if(!_loc8_)
{
res.push(_loc3_);
}
}
_loc7_ = _loc7_ + 1;
}
}
_loc10_ = _loc10_ + 1;
}
return res;
};
ctrl.startMove = function(block)
{
if(_root.gamepause)
{
return undefined;
}
if(this.moveInfo != undefined)
{
return undefined;
}
if(this.disposeInfo != undefined)
{
return undefined;
}
board.grab = block;
board.bound = block.getBounds(this);
delete this.lock;
delete this.lockRow;
delete this.lockCol;
var _loc15_ = board.getLock(block);
this.lockRow = _loc15_.lockRow;
this.lockCol = _loc15_.lockCol;
this.onMouseUp = function()
{
delete this.onMouseMove;
delete this.onMouseUp;
var _loc17_ = this.lock;
delete this.lock;
if(_loc17_)
{
delete this.moveInfo;
return undefined;
}
var _loc11_ = this.moveInfo;
if(_loc11_ != undefined)
{
var _loc14_ = undefined;
var _loc9_ = new Array();
trace(_loc11_.step);
switch(_loc11_.dir)
{
case "R":
_loc14_ = Math.round(_loc11_.step / BLOCK_WIDTH);
var _loc10_ = board.grab.pos.row;
var _loc5_ = board.col;
while(_loc5_ >= 1)
{
_loc9_.push(board.getRealBlock(_loc10_,_loc5_).no);
_loc5_ = _loc5_ - 1;
}
break;
case "C":
_loc14_ = Math.round(_loc11_.step / BLOCK_HEIGHT);
_loc10_ = board.grab.pos.col;
_loc5_ = board.row;
while(_loc5_ >= 1)
{
_loc9_.push(board.getRealBlock(_loc5_,_loc10_).no);
_loc5_ = _loc5_ - 1;
}
}
var _loc13_ = board.prepareAdjacent(board.grab,_loc11_.dir,_loc14_);
var _loc15_ = _loc13_.blocks;
var _loc6_ = _loc13_.roll;
var _loc16_ = board.getAdjacent(_loc9_,_loc15_);
game.sum = 0;
var _loc12_ = game.calculate(_loc16_);
trace("found : " + _loc12_);
if(_loc12_.length > 0)
{
_loc5_ = _loc6_.length - 1;
while(_loc5_ >= 0)
{
var _loc2_ = _loc6_[_loc5_];
var _loc4_ = board["block" + _loc2_.no];
setBlock(_loc4_,_loc2_.face);
if(_loc2_.link1)
{
board.createLinkAt(_loc4_,"T");
}
else
{
_loc4_.link1.removeMovieClip();
}
if(_loc2_.link2)
{
board.createLinkAt(_loc4_,"B");
}
else
{
_loc4_.link2.removeMovieClip();
}
_loc5_ = _loc5_ - 1;
}
_loc5_ = _loc6_.length - 1;
while(_loc5_ >= 0)
{
var _loc3_ = _loc6_[_loc5_].no;
_loc4_ = board["block" + _loc3_];
if(_loc4_.link2)
{
var _loc8_ = _loc3_ % board.row != 0 ? _loc3_ + 1 : _loc3_ - board.row + 1;
var _loc7_ = board["block" + _loc8_];
_loc4_.link2.linkTo = _loc7_.link1;
_loc7_.link1.linkTo = _loc4_.link2;
}
_loc5_ = _loc5_ - 1;
}
this.moveInfo.step = 0;
this.onRollBlockBack();
_loc12_ = board.blazeTheBomb(_loc12_);
this.disposeBlock(_loc12_);
}
else
{
this.onEnterFrame = this.onRollBlockBack;
}
}
};
this.onMouseMove = this.onMoveInBlock;
};
board.findDispose = function(list)
{
var _loc2_ = this.getBlocks();
var _loc3_ = this.getAdjacent(list,_loc2_);
return _loc3_;
};
board.afterDispose = function(list)
{
this.dNo = 0;
var _loc7_ = 0;
while(_loc7_ < list.length)
{
var _loc3_ = list[_loc7_];
var _loc2_ = 1 + Math.floor(Math.random() * game.playColor);
setBlock(_loc3_,_loc2_);
_loc7_ = _loc7_ + 1;
}
if(Math.floor(Math.random() * 100) < 4)
{
_loc7_ = Math.floor(Math.random() * list.length);
var _loc5_ = list[_loc7_];
var _loc6_ = _loc5_._currentframe + MAX_COLOR;
if(_loc6_ <= _loc5_._totalframes)
{
setBlock(_loc5_,_loc6_);
}
}
};
ctrl.playUnlockSound = function(block)
{
if(block.link1 || block.link2)
{
}
};
ctrl.disposeBlock = function(list)
{
hint_start._visible = false;
hint_target._visible = false;
disposeResult(list);
list.sort(Array.NUMERIC);
var _loc17_ = new Array();
var _loc7_ = 1;
var _loc3_ = board.row;
var _loc14_ = undefined;
var _loc16_ = 0;
while(_loc16_ < board.col)
{
_loc14_ = board["block" + _loc3_];
var _loc15_ = undefined;
var _loc6_ = 0;
while(_loc6_ < list.length)
{
if(list[_loc6_] <= _loc3_)
{
_loc15_ = _loc6_;
}
_loc6_ = _loc6_ + 1;
}
if(_loc15_ != undefined)
{
var _loc11_ = list.splice(0,_loc15_ + 1);
trace(">..." + _loc11_);
_loc6_ = 0;
while(_loc6_ < _loc11_.length)
{
var _loc12_ = board["block" + _loc11_[_loc6_]];
board.createDisposeAt(_loc12_);
_loc12_._y = _loc14_._y - BLOCK_HEIGHT;
_loc12_.dispose = true;
_loc14_ = _loc12_;
this.playUnlockSound(_loc12_);
_loc12_.link1.linkTo.removeMovieClip();
_loc12_.link1.removeMovieClip();
_loc12_.link2.linkTo.removeMovieClip();
_loc12_.link2.removeMovieClip();
_loc6_ = _loc6_ + 1;
}
var _loc10_ = new Array();
var _loc4_ = _loc7_;
while(_loc4_ <= _loc3_)
{
_loc12_ = board["block" + _loc4_];
var _loc2_ = new Object();
_loc2_._y = _loc12_._y;
_loc2_.no = _loc4_;
_loc2_.type = _loc12_._currentframe;
_loc2_.dispose = _loc12_.dispose;
if(_loc4_ == _loc7_)
{
this.playUnlockSound(_loc12_);
_loc12_.link1.removeMovieClip();
_loc12_.link1.linkTo.removeMovieClip();
}
else if(_loc4_ == _loc3_)
{
_loc12_.link2.removeMovieClip();
_loc12_.link2.linkTo.removeMovieClip();
}
_loc2_.link1 = _loc12_.link1 != undefined;
_loc2_.link2 = _loc12_.link2 != undefined;
_loc12_.link1.removeMovieClip();
_loc12_.link2.removeMovieClip();
_loc10_.push(_loc2_);
_loc4_ = _loc4_ + 1;
}
_loc10_.sortOn("_y",Array.NUMERIC | Array.DESCENDING);
_loc4_ = _loc7_;
var _loc9_ = 0;
while(_loc4_ <= _loc3_)
{
_loc12_ = board["block" + _loc4_];
_loc2_ = _loc10_[_loc9_];
_loc12_._y = _loc2_._y;
setBlock(_loc12_,_loc2_.type);
if(_loc2_.link1)
{
board.createLinkAt(_loc12_,"T");
}
if(_loc2_.link2)
{
board.createLinkAt(_loc12_,"B");
}
delete _loc12_.dispose;
if(_loc2_.dispose)
{
_loc17_.push(_loc12_);
}
_loc4_;
_loc4_++;
_loc9_;
_loc9_++;
}
_loc4_ = _loc7_;
while(_loc4_ <= _loc3_)
{
var _loc5_ = board["block" + _loc4_];
if(_loc5_.link2)
{
var _loc8_ = board["block" + (_loc4_ + 1)];
_loc5_.link2.linkTo = _loc8_.link1;
_loc8_.link1.linkTo = _loc5_.link2;
}
_loc4_ = _loc4_ + 1;
}
}
_loc16_;
_loc16_++;
_loc7_ += board.row;
_loc3_ += board.row;
}
var _loc18_ = new Array();
var _loc19_ = new Array();
_loc16_ = board.row * board.col;
while(_loc16_ >= 1)
{
_loc12_ = board["block" + _loc16_];
if(_loc12_._y != _loc12_.pos.y)
{
_loc18_.push(_loc12_);
_loc19_.push(_loc12_.no);
}
_loc16_ = _loc16_ - 1;
}
var _loc20_ = new Object();
_loc20_.list = _loc17_;
_loc20_.moveBlock = _loc18_;
_loc20_.findBlock = _loc19_;
this.disposeInfo = _loc20_;
this.finish = getTimer() + 500;
this.onEnterFrame = function()
{
if(getTimer() > this.finish)
{
delete this.finish;
board.afterDispose(this.disposeInfo.list);
this.onEnterFrame = this.onBlockFall;
}
};
};
ctrl.checkMove = function()
{
var _loc2_ = board.getHint();
this.movable = _loc2_ != undefined;
};
ctrl.onBlockFall = function()
{
var _loc5_ = this.disposeInfo.moveBlock;
var _loc4_ = _loc5_.length - 1;
while(_loc4_ >= 0)
{
var _loc3_ = _loc5_[_loc4_];
_loc3_._y += Math.min(_loc3_.pos.y - _loc3_._y,20);
if(_loc3_._y == _loc3_.pos.y)
{
_loc5_.splice(_loc4_,1);
}
_loc4_ = _loc4_ - 1;
}
if(_loc5_.length == 0)
{
this.finish = getTimer() + 100;
this.onEnterFrame = function()
{
if(getTimer() > this.finish)
{
delete this.finish;
this.onEnterFrame = function()
{
if(_root.gamepause)
{
return undefined;
}
var _loc4_ = board.findDispose(this.disposeInfo.findBlock);
var _loc3_ = game.calculate(_loc4_);
if(_loc3_.length > 0)
{
_loc3_ = board.blazeTheBomb(_loc3_);
this.disposeBlock(_loc3_);
}
else
{
delete this.disposeInfo;
delete this.onEnterFrame;
if(this.linkInfo)
{
ctrl.randomLink();
}
this.checkMove();
combo.gotoAndStop(1);
}
};
}
};
}
};
game.calculate = function(adj)
{
var _loc4_ = new Array();
var _loc6_ = 0;
var _loc7_ = 0;
var _loc3_ = 0;
while(_loc3_ < adj.length)
{
_loc4_ = _loc4_.concat(adj[_loc3_]);
var _loc2_ = adj[_loc3_].length;
game.sum += _loc2_;
_loc6_ = Math.max(_loc2_,_loc6_);
if(_loc2_ > 6)
{
_loc7_ += (_loc2_ - 6) * 100;
}
_loc3_ = _loc3_ + 1;
}
if(_loc4_.length > 0)
{
if(_root.gamemode == "story")
{
trace("add score story");
_root.score += _loc4_.length * 10 + _loc7_;
}
if(_root.gamemode == "survival")
{
trace("add score survival");
_root.score += (MAX_COLOR + _loc4_.length + _loc7_) * 15;
}
}
if(game.sum >= 11)
{
combo.gotoAndStop(4);
}
else if(game.sum >= 9)
{
combo.gotoAndStop(3);
}
else if(game.sum >= 7)
{
combo.gotoAndStop(2);
}
combo.cmb.gotoAndPlay(1);
return _loc4_;
};
ctrl.onRollBlockBack = function()
{
var _loc2_ = this.moveInfo;
if(_loc2_.step == 0)
{
board.backToNormal();
delete this.moveInfo;
delete this.onEnterFrame;
}
else
{
_loc2_.step *= 0.8;
if(Math.abs(_loc2_.step) < 1)
{
_loc2_.step = 0;
}
this.updateMove();
}
};
ctrl.getDirection = function(bound, x, y)
{
var _loc3_ = bound;
var _loc7_ = undefined;
var _loc6_ = undefined;
var _loc5_ = undefined;
var _loc4_ = undefined;
_loc7_ = _loc3_.xMin - x;
_loc6_ = x - _loc3_.xMax;
_loc5_ = _loc3_.yMin - y;
_loc4_ = y - _loc3_.yMax;
var _loc2_ = Math.max(Math.max(_loc7_,_loc6_),Math.max(_loc5_,_loc4_));
if(_loc2_ > 0)
{
var _loc1_ = new Object();
if(_loc2_ == _loc7_)
{
_loc1_.dir = "R";
_loc1_.step = - _loc2_;
}
else if(_loc2_ == _loc6_)
{
_loc1_.dir = "R";
_loc1_.step = _loc2_;
}
else if(_loc2_ == _loc5_)
{
_loc1_.dir = "C";
_loc1_.step = - _loc2_;
}
else if(_loc2_ == _loc4_)
{
_loc1_.dir = "C";
_loc1_.step = _loc2_;
}
return _loc1_;
}
};
ctrl.onMoveInBlock = function()
{
delete this.lock;
var _loc5_ = this.getDirection(board.bound,this._xmouse,this._ymouse);
if(_loc5_ != undefined)
{
this.moveInfo = _loc5_;
var _loc4_ = board.grab.pos;
var _loc6_ = undefined;
var _loc3_ = undefined;
var _loc2_ = undefined;
var lock;
switch(_loc5_.dir)
{
case "R":
_loc3_ = board.contRow1;
_loc3_._x = 0;
_loc3_._y = _loc4_.y;
_loc2_ = board.contRow2;
_loc2_._x = 0;
_loc2_._y = _loc4_.y;
_loc6_ = _loc4_.row;
if(this.lockRow)
{
lock = true;
}
break;
case "C":
_loc3_ = board.contCol1;
_loc3_._x = _loc4_.x;
_loc3_._y = 0;
_loc2_ = board.contCol2;
_loc2_._x = _loc4_.x;
_loc2_._y = 0;
_loc6_ = _loc4_.col;
if(this.lockCol)
{
lock = true;
}
}
this.lock = lock == true;
trace(this.lock);
if(lock)
{
trace("lock.............");
}
else
{
board.setVisibleLine(_loc5_.dir,_loc6_,false);
this.setContainerLine(_loc5_.dir,_loc6_,[_loc3_,_loc2_]);
_loc3_._visible = true;
_loc2_._visible = true;
this.onMouseMove = this.onMoveOutBlock;
}
}
else
{
board.backToNormal();
delete this.moveInfo;
}
};
ctrl.setContainerLine = function(dir, t, cont)
{
var _loc7_ = undefined;
var _loc2_ = undefined;
_loc7_ = dir != "R" ? board.row : board.col;
var _loc3_ = 1;
while(_loc3_ <= _loc7_)
{
if(dir == "R")
{
_loc2_ = board.getRealBlock(t,_loc3_);
}
else
{
_loc2_ = board.getRealBlock(_loc3_,t);
}
for(var _loc6_ in cont)
{
var _loc1_ = cont[_loc6_]["block" + _loc3_];
setBlock(_loc1_,_loc2_._currentframe);
if(_loc2_.link1)
{
board.createLinkAt(_loc1_,"T");
}
else
{
_loc1_.link1.removeMovieClip();
}
if(_loc2_.link2)
{
board.createLinkAt(_loc1_,"B");
}
else
{
_loc1_.link2.removeMovieClip();
}
}
_loc3_ = _loc3_ + 1;
}
};
ctrl.onMoveOutBlock = function()
{
var _loc2_ = this.getDirection(board.bound,this._xmouse,this._ymouse);
if(_loc2_ != undefined)
{
switch(_loc2_.dir)
{
case "C":
_loc2_.step += (_loc2_.step <= 0 ? -1 : 1) * BLOCK_HEIGHT / 2;
break;
case "R":
_loc2_.step += (_loc2_.step <= 0 ? -1 : 1) * BLOCK_WIDTH / 2;
}
this.moveInfo = _loc2_;
this.updateMove();
}
else
{
trace("come back");
this.onMouseMove = this.onMoveInBlock;
}
};
ctrl.updateMove = function()
{
var _loc3_ = this.moveInfo.step;
var _loc4_ = board.grab;
var _loc2_ = undefined;
switch(this.moveInfo.dir)
{
case "C":
_loc2_ = board.contCol1;
_loc2_._y = _loc3_ % _loc2_._height;
board.contCol2._y = _loc2_._y + (_loc3_ <= 0 ? 1 : -1) * _loc2_._height;
break;
case "R":
_loc2_ = board.contRow1;
_loc2_._x = _loc3_ % _loc2_._width;
board.contRow2._x = _loc2_._x + (_loc3_ <= 0 ? 1 : -1) * _loc2_._width;
}
};
board.initialAdjacent = function()
{
var _loc0_ = null;
var _loc3_ = this.adjData = new Object();
_loc3_.head = new Array();
_loc3_.bottom = new Array();
var _loc5_ = undefined;
var _loc4_ = undefined;
_loc5_ = this.row;
_loc4_ = 1;
var _loc2_ = 0;
while(_loc2_ < this.col)
{
_loc3_.head[_loc2_] = _loc5_;
_loc3_.bottom[_loc2_] = _loc4_;
_loc5_ += this.row;
_loc4_ += this.row;
_loc2_ = _loc2_ + 1;
}
};
board.getBlocks = function()
{
var _loc4_ = new Array(this.row * this.col + 1);
var _loc2_ = _loc4_.length - 1;
while(_loc2_ > 0)
{
var _loc3_ = this["block" + _loc2_];
_loc4_[_loc2_] = _loc3_;
_loc2_ = _loc2_ - 1;
}
return _loc4_;
};
board.getRollChanged = function(blocks, dir, line, step)
{
var _loc7_ = undefined;
var _loc6_ = undefined;
var _loc5_ = undefined;
switch(dir)
{
case "R":
_loc7_ = line;
_loc6_ = this.row;
_loc5_ = this.row;
break;
case "C":
_loc7_ = (line - 1) * this.row + 1;
_loc6_ = 1;
_loc5_ = this.col;
step = - step;
}
var _loc4_ = new Array(_loc5_);
step %= _loc5_;
var _loc2_ = 0;
while(_loc2_ < _loc5_)
{
_loc4_[_loc2_] = blocks[_loc7_ + _loc6_ * _loc2_];
_loc2_ = _loc2_ + 1;
}
var _loc10_ = undefined;
if(step > 0)
{
_loc10_ = _loc4_.splice(- step);
_loc4_ = _loc10_.concat(_loc4_);
}
else
{
_loc10_ = _loc4_.splice(0,Math.abs(step));
_loc4_ = _loc4_.concat(_loc10_);
}
_loc2_ = 0;
while(_loc2_ < _loc5_)
{
var _loc3_ = new Object();
_loc3_.no = _loc7_ + _loc6_ * _loc2_;
_loc3_.value = _loc4_[_loc2_];
_loc3_.face = _loc4_[_loc2_]._currentframe;
_loc3_.link1 = _loc4_[_loc2_].link1 != undefined;
_loc3_.link2 = _loc4_[_loc2_].link2 != undefined;
_loc4_[_loc2_] = _loc3_;
_loc2_ = _loc2_ + 1;
}
return _loc4_;
};
board.findSmallAdjacent = function(numba, blocks)
{
return this.findAdjacent(numba,blocks,MIN_BLOCK);
};
board.findAdjacent = function(numba, blocks, atleast)
{
if(this.adjData == undefined)
{
this.initialAdjacent();
}
var _loc0_ = null;
var _loc2_ = this.adjFinder = new Object();
_loc2_.allBlock = blocks;
_loc2_.result = [numba];
_loc2_.c = 0;
_loc2_.find = _loc2_.allBlock[numba].color;
atleast = Number(atleast);
if(!isNaN(atleast) && atleast > 1)
{
_loc2_.atleast = atleast;
}
this.findAdjacent2(numba);
return _loc2_.result.length <= 1 ? undefined : _loc2_.result;
};
board.findAdjacent2 = function(numba)
{
var _loc5_ = 0;
var _loc7_ = 0;
var _loc2_ = 0;
while(_loc2_ < this.col)
{
if(numba == this.adjData.head[_loc2_])
{
_loc7_ = 1;
break;
}
if(numba == this.adjData.bottom[_loc2_])
{
_loc5_ = 1;
break;
}
_loc2_ = _loc2_ + 1;
}
var _loc6_ = this.adjFinder.result;
var _loc8_ = this.adjFinder.allBlock;
var _loc10_ = this.adjFinder.find;
var _loc3_ = undefined;
var _loc9_ = _loc8_.length - 1;
_loc3_ = numba + 1;
if(_loc3_ >= 1 && _loc3_ <= _loc9_ && _loc10_ == _loc8_[_loc3_].color && _loc7_ != 1 && this.isAdjacent(_loc3_))
{
_loc6_.push(_loc3_);
}
_loc3_ = numba + this.row;
if(_loc3_ >= 1 && _loc3_ <= _loc9_ && _loc10_ == _loc8_[_loc3_].color && this.isAdjacent(_loc3_))
{
_loc6_.push(_loc3_);
}
_loc3_ = numba - 1;
if(_loc3_ >= 1 && _loc3_ <= _loc9_ && _loc10_ == _loc8_[_loc3_].color && _loc5_ != 1 && this.isAdjacent(_loc3_))
{
_loc6_.push(_loc3_);
}
_loc3_ = numba - this.row;
if(_loc3_ >= 1 && _loc3_ <= _loc9_ && _loc10_ == _loc8_[_loc3_].color && this.isAdjacent(_loc3_))
{
_loc6_.push(_loc3_);
}
this.adjFinder.c = this.adjFinder.c + 1;
if(this.adjFinder.atleast && _loc6_.length >= this.adjFinder.atleast)
{
return undefined;
}
if(this.adjFinder.c != _loc6_.length)
{
this.findAdjacent2(_loc6_[this.adjFinder.c]);
}
};
board.isAdjacent = function(numba)
{
var _loc4_ = 1;
var _loc3_ = this.adjFinder.result;
var _loc2_ = 0;
while(_loc2_ < _loc3_.length)
{
if(_loc3_[_loc2_] == numba)
{
_loc4_ = 0;
break;
}
_loc2_ = _loc2_ + 1;
}
if(_loc4_ == 1)
{
return true;
}
return false;
};